// 实验一：基本逻辑门的Verilog实现

// 与门 (AND Gate)
module and_gate(
    input a,    // 输入信号a
    input b,    // 输入信号b
    output y    // 输出信号y
);
    assign y = a & b;   // 与运算
endmodule

// 或门 (OR Gate)
module or_gate(
    input a,    // 输入信号a
    input b,    // 输入信号b
    output y    // 输出信号y
);
    assign y = a | b;   // 或运算
endmodule

// 非门 (NOT Gate)
module not_gate(
    input a,    // 输入信号a
    output y    // 输出信号y
);
    assign y = ~a;      // 非运算
endmodule

// 与非门 (NAND Gate)
module nand_gate(
    input a,    // 输入信号a
    input b,    // 输入信号b
    output y    // 输出信号y
);
    assign y = ~(a & b);    // 与非运算
endmodule

// 或非门 (NOR Gate)
module nor_gate(
    input a,    // 输入信号a
    input b,    // 输入信号b
    output y    // 输出信号y
);
    assign y = ~(a | b);    // 或非运算
endmodule

// 异或门 (XOR Gate)
module xor_gate(
    input a,    // 输入信号a
    input b,    // 输入信号b
    output y    // 输出信号y
);
    assign y = a ^ b;   // 异或运算
endmodule